package com.example.test.config.aop;

/**
 * Redis相关实体类
 *
 * @author tyd 2020-11-18
 */
public interface RedisConstant {

    /**
     * auth前缀
     */
    String AUTH = "auth:";
    /**
     * token的key前缀
     */
    String AUTH_TOKEN_KEY = AUTH + "token:";

    /**
     * userId的key前缀（key为userId，value为多个token）-单点登录使用
     */
    String AUTH_USERID_KEY = AUTH + "userId:";

    /**
     * 短信验证码key前缀
     */
    String AUTH_MESSAGE_CODE_KEY = AUTH + "message:code:";

    /**
     * 图片验证码key前缀
     */
    String AUTH_IMAGE_CODE_KEY = AUTH + "image:code:";

    /**
     * 短信验证码过期时间
     */
    Long AUTH_MESSAGE_CODE_EXPIRE = 10 * 60 * 1000L;

    /**
     * 图片验证码过期时间
     */
    Long AUTH_IMAGE_CODE_EXPIRE = 10 * 60 * 1000L;

    /**
     * 用户验证码输入错误次数，（超过该次数需要显示图片验证码）
     */
    Integer AUTH_MESSAGE_CODE_ERROR_COUNT = 2;

    /**
     * 用户输入验证码错误次数
     */
    String AUTH_MESSAGE_CODE_COUNT_KEY = AUTH + "message:code:error:count:";

    /**
     * 用户登录错误次数key前缀
     */
    String AUTH_LOGIN_ERROR_COUNT_KEY = AUTH + "login:error:count:";

    /**
     * 用户登录错误次数记录有效期
     */
    Long AUTH_ERROR_COUNT_EXPIRE = 30 * 60 * 1000L;

    /**
     * 用户锁定标识
     */
    String AUTH_USER_LOCK_STATUS = AUTH + "user:locked:";

    /**
     * 用户锁定值
     */
    String AUTH_USER_LOCKED_VALUE = "1";

    /**
     * token过期时间
     */
    Long AUTH_TOKEN_EXPIRE = 30 * 60 * 1000L;

    /**
     * 用户锁定时长
     */
    Long AUTH_USER_LOCKED_EXPIRE = 30 * 60 * 1000L;


    /**
     * 用户登录允许错误次数
     */
    Integer AUTH_USER_ERROR_LOGIN_COUNT = 5;

    /**
     * redis 事件消息过期时间
     */
    Long AUTH_MQ_EVENT_EXPIRATION_TIME = 1L;

    /**
     * redis 事件消息缓存key
     */
    String AUTH_MQ_EVENT_KEY = "auth:event:";

    /**
     * redis websocket缓存前缀
     */
    String WEBSOCKET_KEY = "websocket:";

    /**
     * redis分布式锁 key
     */
    String LOCK_KEY = "lock:";

}
